Diagnosing Java Programs with Static Abstractions of Data Structures
نویسندگان
چکیده
Model-based software debugging helps users to find program errors and thus to reduce the overall costs for software development. In this paper, we extend our previous work to diagnose common data structure errors. The proposed logical program model derives from a collection of indexed object relations, which capture the underlying data structures at the abstraction level of objects. A case study suggests that the counterexample with the diagnoses can help the user to understand the nature of program errors and thus speed up error correction.
منابع مشابه
Shape Analysis and Cache Locality for Recursive Data Structures in Java
There is already a substantial amount of practical research into optimizing programs with static, sequential, array-based data structures. Numerical programs in particular tend to make heavy use of these data structures. However, not all numerical programs make heavy use of such structures, nor do many other programs we would like to be able to optimize. Another class of data structures which i...
متن کاملSymbolic Execution with Abstract Subsumption Checking
We address the problem of error detection for programs that take recursive data structures and arrays as input. Previously we proposed a combination of symbolic execution and model checking for the analysis of such programs: we put a bound on the size of the program inputs and/or the search depth of the model checker to limit the search state space. Here we look beyond bounded model checking an...
متن کاملFlow Java: Declarative Concurrency for Java
This thesis presents the design, implementation, and evaluation of Flow Java, a programming language for the implementation of concurrent programs. Flow Java adds powerful programming abstractions for automatic synchronization of concurrent programs to Java. The abstractions added are single assignment variables (logic variables) and futures (read-only views of logic variables). The added abstr...
متن کاملDynamic Shape and Data Structure Analysis in Java
Analysis of dynamic data structure usage is useful for both program understanding and for improving the accuracy of other program analyses. Static shape analysis techniques, however, suffer from reduced accuracy in complex situations. We have designed and implemented a dynamic shape analysis system that allows one to examine and analyze how Java programs build and modify data structures. Using ...
متن کاملTIE: Principled Reverse Engineering of Types in Binary Programs
A recurring problem in security is reverse engineering binary code to recover high-level language data abstractions and types. High-level programming languages have data abstractions such as buffers, structures, and local variables that all help programmers and program analyses reason about programs in a scalable manner. During compilation, these abstractions are removed as code is translated d...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2004